package com.example.demoserver.controller;

import com.example.demoserver.entity.InteDatapoint;
import com.example.demoserver.entity.InteGateway;
import com.example.demoserver.service.impl.InteDatapointServiceImpl;
import com.example.demoserver.service.impl.InteGatewayServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/datapoint")
@RequiredArgsConstructor
@Component
public class InteDatapointController {
    private final InteDatapointServiceImpl inteDatapointService;
    @GetMapping("/selectdata")
    public List<Object> selectData (Integer id) {
        List<InteDatapoint> list=inteDatapointService.selectData(id);
        List<Object> data=new ArrayList<>();
        List<String> tags=new ArrayList<>();//tag
        List<List<Double>> values=new ArrayList();//数据
        List<String> units=new ArrayList<>();//单位
        List<List<String>> times=new ArrayList<>();//时间
        List<List<Integer>> bol=new ArrayList<>();//是否为空
        for(int i=0;i<list.size();i++){
            int num=tags.indexOf(list.get(i).getPointtag());
            if(num!=-1){
                values.get(num).add(list.get(i).getPointvalue());
                times.get(num).add(list.get(i).getUpdatetime());
                bol.get(num).add(list.get(i).getIsbool());
            }else{
                tags.add(list.get(i).getPointtag());
                List<Double> l=new ArrayList<>();
                l.add(list.get(i).getPointvalue());
                values.add(l);
                units.add(list.get(i).getPointunit());
                List<String> l1=new ArrayList<>();
                l1.add(list.get(i).getUpdatetime());
                times.add(l1);
                List<Integer> l2=new ArrayList<>();
                l2.add(list.get(i).getIsbool());
                bol.add(l2);
            }
        }
        data.add(tags);
        data.add(values);
        data.add(units);
        data.add(times);
        data.add(bol);
        return data;
    }
}
